// 导入路径辅助模块，避免重复引用
const pathImport = require('../helpers/path_import.js');
const { pageHelper, ProjectBiz } = pathImport;

Page({
  data: {
    motorTypes: ['直流电机', '无刷电机', 'BLDC电机', '步进电机'],
    motorTypeIndex: 0,
    voltage: '',
    ke: '',
    poles: '4',
    resistance: '',
    current: '',
    maxSpeed: '0 RPM',
    showResult: false,
    showPoles: false,
    flux: ''
  },

  onLoad: function (options) {
    ProjectBiz.initPage(this);
  },

  // 电机类型选择
  bindMotorTypeChange: function(e) {
    const index = e.detail.value;
    const showPoles = index === 1 || index === 2; // 无刷和BLDC电机需要极对数
    
    this.setData({
      motorTypeIndex: index,
      showPoles: showPoles
    });
  },

  // 电压输入
  bindVoltageInput: function(e) {
    this.setData({
      voltage: e.detail.value
    });
  },

  // 反电动势常数输入
  bindKeInput: function(e) {
    this.setData({
      ke: e.detail.value
    });
  },

  // 极对数输入
  bindPolesInput: function(e) {
    this.setData({
      poles: e.detail.value
    });
  },

  // 电阻输入
  bindResistanceInput: function(e) {
    this.setData({
      resistance: e.detail.value
    });
  },

  // 电流输入
  bindCurrentInput: function(e) {
    this.setData({
      current: e.detail.value
    });
  },

  // 磁链输入
  bindFluxInput: function(e) {
    this.setData({
      flux: e.detail.value
    });
  },

  // 计算转速
  calculate: function() {
    // 验证输入
    if (!this.validateInputs()) {
      return;
    }
    
    // 获取输入值
    const voltage = parseFloat(this.data.voltage);
    const flux = parseFloat(this.data.flux);
    const poles = parseFloat(this.data.poles);
    
    // 计算同步频率 (Hz)
    // 公式: n = V/(4*π*λ)
    const PI = Math.PI;
    const syncFreq = voltage / (4 * PI * flux);
    
    // 计算转速 (RPM)
    // 公式: N = 60*n/P
    let rpm = (60 * syncFreq) / poles;
    
    // 四舍五入到整数
    rpm = Math.round(rpm);
    
    this.setData({
      maxSpeed: rpm
    });
  },

  // 验证输入
  validateInputs: function() {
    if (!this.data.voltage) {
      wx.showToast({
        title: '请输入额定电压',
        icon: 'none'
      });
      return false;
    }
    
    if (!this.data.flux) {
      wx.showToast({
        title: '请输入磁链值',
        icon: 'none'
      });
      return false;
    }
    
    if (!this.data.poles) {
      wx.showToast({
        title: '请输入极对数',
        icon: 'none'
      });
      return false;
    }
    
    return true;
  },

  url: function (e) {
    pageHelper.url(e, this);
  }
}); 